const storageService = require('../../../services/storage')
Page({
  data: {
    groups: [],
  },

  onLoad: function () {
    this.loadGroups()
  },

  onShow: function () {
    // 每次页面显示时重新加载编组数据，确保数据最新
    this.loadGroups()
  },

  // 加载编组数据
  loadGroups: function () {
    const groups = storageService.getGroups() || []
    this.setData({ groups })
  },

  // 创建新编组
  createNewGroup: function () {
    // 检查是否已达到最大编组数量限制
    if (this.data.groups.length >= 10) {
      wx.showToast({
        title: '最多只能创建10个编组',
        icon: 'none',
        duration: 2000,
      })
      return
    }

    // 跳转到编辑编组页面创建新编组
    wx.navigateTo({
      url: '/packageGroup/pages/edit_group/edit_group',
    })
  },

  // 编辑现有编组
  editGroup: function (e) {
    const index = e.currentTarget.dataset.index
    const group = this.data.groups[index]

    wx.navigateTo({
      url: `/packageGroup/pages/edit_group/edit_group?groupInfo=${encodeURIComponent(JSON.stringify(group))}`,
    })
  },

  // 删除编组
  deleteGroup: function (e) {
    const index = e.currentTarget.dataset.index
    const group = this.data.groups[index]

    wx.showModal({
      title: '删除编组',
      content: '确定要删除此编组吗？删除编组后，编组内的设备将重新显示在设备列表中。',
      success: res => {
        if (res.confirm) {
          try {
            // 使用存储服务恢复设备状态并删除编组
            storageService.restoreDevicesOnGroupDelete(group.deviceId)

            // 更新页面数据
            const groups = storageService.getGroups()
            this.setData({ groups })

            // 设置一个标记，告诉首页需要刷新设备列表
            storageService.setRefreshDevicesFlag()

            wx.showToast({
              title: '编组已删除',
              icon: 'success',
              duration: 1500,
              success: () => {
                // 延迟返回首页，确保用户能看到提示
                setTimeout(() => {
                  // 返回首页
                  wx.switchTab({
                    url: '/pages/index/index',
                  })
                }, 1500)
              },
            })
          } catch (error) {
            console.error('删除编组失败:', error)
            wx.showToast({
              title: '删除编组失败',
              icon: 'none',
            })
          }
        }
      },
    })
  },
})
